const http = require('http');

// 测试代理服务器
function testProxy() {
  console.log('开始测试代理服务器...\n');
  
  // 测试 1: 测试无效的目标 URL
  console.log('测试 1: 发送请求但不指定目标 URL');
  const req1 = http.get('http://localhost:8080/', (res) => {
    let data = '';
    res.on('data', chunk => data += chunk);
    res.on('end', () => {
      console.log(`状态码: ${res.statusCode}`);
      console.log(`响应: ${data}\n`);
      
      // 测试 2: 测试有效的目标 URL
      console.log('测试 2: 通过查询参数指定目标 URL');
      const req2 = http.get('http://localhost:8080/?target=http://httpbin.org/get', (res) => {
        let data = '';
        res.on('data', chunk => data += chunk);
        res.on('end', () => {
          console.log(`状态码: ${res.statusCode}`);
          console.log(`响应长度: ${data.length} 字节`);
          console.log(`响应预览: ${data.substring(0, 200)}...\n`);
          
          // 测试 3: 测试请求头方式
          console.log('测试 3: 通过请求头指定目标 URL');
          const options = {
            hostname: 'localhost',
            port: 8080,
            path: '/',
            method: 'GET',
            headers: {
              'X-Proxy-Target': 'http://httpbin.org/user-agent'
            }
          };
          
          const req3 = http.request(options, (res) => {
            let data = '';
            res.on('data', chunk => data += chunk);
            res.on('end', () => {
              console.log(`状态码: ${res.statusCode}`);
              console.log(`响应: ${data}\n`);
              console.log('所有测试完成！');
              process.exit(0);
            });
          });
          
          req3.on('error', (err) => {
            console.error(`测试 3 失败: ${err.message}`);
            process.exit(1);
          });
          
          req3.end();
        });
      });
      
      req2.on('error', (err) => {
        console.error(`测试 2 失败: ${err.message}`);
        process.exit(1);
      });
    });
  });
  
  req1.on('error', (err) => {
    console.error(`测试 1 失败: ${err.message}`);
    console.error('请确保代理服务器正在运行（npm start）');
    process.exit(1);
  });
}

// 延迟启动测试，确保服务器已启动
setTimeout(testProxy, 1000);

